package protect.week08;

/**
 * @author thinkpad - 83start
 * @version v1.0
 * @create 2022/10/19 21:39
 * @package protect.week08
 * @description 796. 旋转字符串
 * 给定两个字符串, s 和 goal。如果在若干次旋转操作之后，s 能变成 goal ，那么返回 true 。
 * <p>
 * s 的 旋转操作 就是将 s 最左边的字符移动到最右边。
 * <p>
 * 例如, 若 s = 'abcde'，在旋转一次之后结果就是'bcdea' 。
 * <p>
 * <p>
 * 示例 1:
 * <p>
 * 输入: s = "abcde", goal = "cdeab"
 * 输出: true
 * 示例 2:
 * <p>
 * 输入: s = "abcde", goal = "abced"
 * 输出: false
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/rotate-string/
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

public class Ch01_RotateString {

    public boolean rotateString(String s, String goal) {

        // 旋转截至的条件，旋转后的元素 == 原来的元素
        String rotate = rotate(s);
        if (rotate.equals(goal)){
            return true;
        }

        while (!rotate.equals(s)){
            if (rotate.equals(goal)){
                return true;
            }else {
                rotate = rotate(rotate);
            }
        }
        return false;

    }

    //    public static String rotate(String s) {
//        sList.clear();
//        for (int i = 0; i < s.length(); i++) {
//            sList.add(s.charAt(i));
//        }
//
//        Character poll = sList.poll();
//        sList.add(poll);
//
//        String str = "";
//        for (char q : sList) {
//            str += q;
//        }
//        return str;
//    }
    public static String rotate(String s) {
        String substring1 = s.substring(0, 1);
        String substring2 = s.substring(1);

        return  substring2 + substring1;
    }



}
